package com.tea.service;

import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * 文件存储服务接口
 * 支持本地存储和OSS存储的统一接口
 * @author tea-shop
 */
public interface FileStorageService {
    
    /**
     * 上传文件
     * @param file 文件
     * @return 文件访问URL
     * @throws IOException IO异常
     */
    String uploadFile(MultipartFile file) throws IOException;
    
    /**
     * 上传文件到指定目录
     * @param file 文件
     * @param directory 目录（如：image/、video/）
     * @return 文件访问URL
     * @throws IOException IO异常
     */
    String uploadFile(MultipartFile file, String directory) throws IOException;
    
    /**
     * 上传字节数组
     * @param bytes 字节数组
     * @param fileName 文件名
     * @param contentType 内容类型
     * @return 文件访问URL
     */
    String uploadBytes(byte[] bytes, String fileName, String contentType);
    
    /**
     * 删除文件
     * @param fileName 文件名
     * @return 是否删除成功
     */
    boolean deleteFile(String fileName);
    
    /**
     * 删除文件（通过完整URL）
     * @param fileUrl 文件完整URL
     * @return 是否删除成功
     */
    boolean deleteFileByUrl(String fileUrl);
    
    /**
     * 检查文件是否存在
     * @param fileName 文件名
     * @return 是否存在
     */
    boolean doesFileExist(String fileName);
    
    /**
     * 获取存储类型
     * @return 存储类型（LOCAL/OSS）
     */
    String getStorageType();
}